<?php

    #-------------------------------------------------------------#
	# This file is part of the Tekuna MVC Microframework for PHP. #
	# (c) 2009 Niels Jäckel <niels.jaeckel@tekuna.org>            #
	# Please visit http://tekuna.org/ for more information.       #
	#                                                             #
	# This software is licensed under the MIT License. Please     #
	# view the LICENSE file for the full text of this license.    #
    #-------------------------------------------------------------#


	Tekuna :: load('org.tekuna.core.application.TekunaApplicationContext');
	Tekuna :: load('org.tekuna.core.config.ApplicationModule');


	/**
	 * Interface for a module processor. This application fragment handles the
	 * request for a given ApplicationModule and returns the output for all slots
	 * as associative array.
	 */

	interface TekunaModuleProcessor {


		/**
		 * Constructor for a new module processor.
		 *
		 * @param TekunaApplicationContext $objContext the context object
		 */

		public function __construct(TekunaApplicationContext $objContext);


		/**
		 * This method implements the actual algorithm to process the given
		 * module and build the list of layout slot outputs.
		 *
		 * @param ApplicationModule $objModule
		 * @return array associative array in the form [slot name] => 'output'.
		 */

		public function processModule(ApplicationModule $objModule);
	}
